package top.yxqz.vagrancy.controller;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.yxqz.vagrancy.entity.UserEntity;
import top.yxqz.vagrancy.service.UserEntityService;
import top.yxqz.vagrancy.utils.R;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * @author: 余小小
 * @date: 2023/6/1
 * @description：
 */
@RestController
@RequestMapping("/users")
@Slf4j
public class UserController {


    @Autowired
    private UserEntityService userEntityService;

    /**
     * 用户登录（管理员）
     * 1。拿到前端的登录参数-----对象传参(前端的name属性必须和对象字段保持高度一致）
     * 2. 执行的登录：调用业务层接口----业务层的实现类（具体的实现）---调用数据层的接口
     * 如果response的数据乱码 去Tomcat的配置文件中的server.xml中找到Connector配置如下配置
     * <Connector port="8080" protocol="HTTP/1.1"
     * connectionTimeout="20000"
     * redirectPort="8443"  URIEncoding ="UTF-8"/>
     *
     * @return
     */
    @PostMapping("/login")
    public R login(@RequestBody UserEntity userEntity, HttpSession session) {
//        封装条件构造器
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        ew.eq("username", userEntity.getUsername());

        UserEntity user = userEntityService.selectOne(ew);
        /*
        判断是否登录成功
             1.判断数据的查结果对象是不是null
            2.判断密码是否匹配
         */
        if (user == null) {
            return R.error("你输入的用户不存在");
        }
        if (!user.getPassword().equals(userEntity.getPassword())) {
            return R.error("你的密码有问题");
        }

//        登录成功，将数据库查询到的信息，封装到域对象中
        session.setAttribute("user_session", user);


        return R.ok();
    }


    /**
     * 注销用户
     */
    @GetMapping("/logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate(); //让当前会话立即失效
        System.out.println("xxxxxx");
        return R.ok("注销成功");
    }
}

